package a18_SimplePracticeAll;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.Random;

/**
 * @Author quan
 * @Description 开发验证码
 * @Date 2023/2/2 15:18
 */
/*定义方法实现随机产生一个5位的验证码：
长度为5，前4位是大写或者小写字母，最后一位是数字*/
    //技巧:
    //如果以后要在一堆没有什么规律的数据中随机抽取，
    // 那么可以先把这些数据放在数组中，然后再随机抽取一个索引获取这个元素
public class A2_achieveVerifyCode {
    public static void main(String[] args) {
        //1、将大写字母和小写字母都放在数组中
        char[] arr = new char[52];
        for (int i = 0; i < arr.length; i++) {
            //难点1：(char)97 ——>'a'
            //添加小写字母
            if(i<=25){
                arr[i] = (char)(97+i);
            }else{//添加大写字母
                //(char)65 ——>'A'
                arr[i] = (char)(65+i-26);//执行到这里，i=26，而A是65，所以要减去一个26
            }
        }
        Random r = new Random();
        //定义一个空字符串，方便后续4次循环获取的随机字母的拼接
        String result = "";
        //2、随机抽取数组中的索引4次
        for (int i = 0; i < 4; i++) {
            //生成随机索引，索引范围是0-51 =arr.length();
            int randomIndex= r.nextInt(arr.length);
            result += arr[randomIndex];
        }
        //3、随机抽取一个数字0-9
        //4、拼接
        //获取最后一位的随机数字，0-9
        int num = r.nextInt(10);
        //将数字与前4位的字母进行拼接
        result = result + num;//数字与字符串拼接，自动为字符串类型进行拼接了
        System.out.println(result);
    }
}
